package com.example.sbbsec.quartz.schedule;


import com.example.sbbsec.quartz.entity.schedule.ScheduleJob;

/**
 * 定时任务接口服务
 *
 * @author lowe.yang
 * @date 2019-01-25 16:43
 */
public interface IJobService<T extends ScheduleJob> {

    /**
     * 创建任务
     *
     * @param job 任务实体
     * @return 是否成功
     */
    Boolean createJob(T job);

    /**
     * 更新任务
     *
     * @param job 任务实体
     * @return 是否成功
     */
    Boolean updateJob(T job);

    /**
     * 删除任务
     * 任务分组使用默认分组
     *
     * @param jobName 任务名称
     * @return 是否成功
     */
    Boolean deleteJob(String jobName);

    /**
     * 删除任务
     *
     * @param jobName  任务名称
     * @param jobGroup 任务分组
     * @return 是否成功
     */
    Boolean deleteJob(String jobName, String jobGroup);

    /**
     * 暂停任务
     * 任务分组使用默认分组
     *
     * @param jobName 任务名称
     * @return 是否成功
     */
    Boolean pauseJob(String jobName);

    /**
     * 暂停任务
     *
     * @param jobName  任务名称
     * @param jobGroup 任务分组
     * @return 是否成功
     */
    Boolean pauseJob(String jobName, String jobGroup);

    /**
     * 恢复任务
     * 任务分组使用默认分组
     *
     * @param jobName 任务名称
     * @return 是否成功
     */
    Boolean resumeJob(String jobName);

    /**
     * 恢复任务
     *
     * @param jobName  任务名称
     * @param jobGroup 任务分组
     * @return 是否成功
     */
    Boolean resumeJob(String jobName, String jobGroup);

}
